package controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import dominio.Item;
import dominio.Pedido;

import servicos.FalhaDeDeletarExcepiton;
import servicos.FalhaDeInclusaoException;
import servicos.ItemRN;
import servicos.PedidoRN;

@ManagedBean(name = "pedidoMB")
@SessionScoped
public class PedidoManagedBean {

	private PedidoRN pedidoRN = new PedidoRN();
	private Pedido pedido = new Pedido();
	private ItemRN itemRN = new ItemRN();
	private Item item = new Item();

	private float totalPed;

	private List<Item> listaItens = new ArrayList<Item>();

	public String reiniciar() {
		setItem(new Item());
		return null;
	}

	public List<Pedido> getListarPedido() {
		try {
			return pedidoRN.listar();

		} catch (FalhaDeInclusaoException e) {
			e.printStackTrace();

			return null;

		}
	}

	public String salvarPedido() {

		try {
			pedidoRN.salvar(pedido);

			ItemRN itemRN = new ItemRN();
			for (Item i : listaItens) {
				itemRN.salvar(i);

			}

			pedido = new Pedido();
			FacesContext contexto = FacesContext.getCurrentInstance();
			contexto.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_INFO, "Pedido Salvo com Sucesso !",
					""));
			return "/paginas/pedido/listar_pedidos.xhtml";

		} catch (FalhaDeInclusaoException e) {
			e.printStackTrace();
		}

		return "falha";
	}

	public String deletarPedido() {
		try {

			pedidoRN.deletar(pedido);

			return "/paginas/pedido/listar_pedidos.xhtml";
		} catch (FalhaDeDeletarExcepiton e) {
			e.printStackTrace();
		}
		return "Falha";
	}

	public String alterarPedido() {
		return "/paginas/pedido/incluir_pedido.xhtml";
	}

	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public String visualizarOrcamento() {

		return "/paginas/pedido/visualizar_pedido.xhtml";
	}

	public String novoPedido() {
		pedido = new Pedido();

		return "/paginas/pedido/incluir_pedido.xhtml";
	}

	public Item getItem() {
		return item;
	}

	public void setItem(Item item) {
		this.item = item;
	}

	public List<Item> getListaItens() {
		return listaItens;
	}

	public void setListaItens(List<Item> listaItens) {
		this.listaItens = listaItens;
	}

	public float getTotalPed() {
		return totalPed;
	}

	public void setTotalPed(float totalPed) {
		this.totalPed = totalPed;
	}

	public float atualizaTotal() {
		totalPed = 0;
		for (Item i : listaItens) {

			float quantidade = Integer.parseInt(i.getQuantidade());

			totalPed += i.getValor() * quantidade;
			pedido.setTotal(totalPed);

		}

		return totalPed;
	}

	public ItemRN getItemRN() {
		return itemRN;
	}

	public void setItemRN(ItemRN itemRN) {
		this.itemRN = itemRN;
	}

}
